package com.hy.mydesktop.client.component.factory;

import com.extjs.gxt.ui.client.widget.Layout;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.hy.mydesktop.client.component.meta.FieldSetModelEnum;
import com.hy.mydesktop.shared.persistence.domain.gxt.GxtComponentMetaNodeModel;


/**
 * 
 * <ul>
 * <li>开发作者：汤莉</li>
 * <li>设计日期：2010-8-29；时间：下午04:32:05</li>
 * <li>类型名称：FieldSetFactory</li>
 * <li>设计目的：</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */
public class FieldSetFactory {

	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建FiledSet控件</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午04:33:01</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaModel
	 * @return
	 */
	public static FieldSet createFieldSet(GxtComponentMetaNodeModel gxtComponentMetaModel){
		return configureFieldSet(gxtComponentMetaModel);
	}
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：配置FiledSet控件的属性</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午04:34:01</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaNodeModel
	 * @return
	 */
	private static FieldSet configureFieldSet(GxtComponentMetaNodeModel gxtComponentMetaNodeModel){
		
		FieldSet field=createDefaultFieldSet();
		field = AbstractComponetFactory.configureAbstractComponet(field, gxtComponentMetaNodeModel);

		
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.CHECKBOXNAME.name().toLowerCase())!=null){
			//设置复选框的名称
			field.setCheckboxName((String)gxtComponentMetaNodeModel.get(FieldSetModelEnum.CHECKBOXNAME.name().toLowerCase()));
		
		}
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.CHECKBOXTOGGLE.name().toLowerCase())!=null){
			//设置复选框的状态（是否被选中）
			field.setCheckboxToggle((Boolean)gxtComponentMetaNodeModel.get(FieldSetModelEnum.CHECKBOXTOGGLE.name().toLowerCase()));
		
		}
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.COLLAPSIBLE.name().toLowerCase())!=null){
			//设置折叠状态
			field.setCollapsible((Boolean)gxtComponentMetaNodeModel.get(FieldSetModelEnum.COLLAPSIBLE.name().toLowerCase()));
		}
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.EXPANDED.name().toLowerCase())!=null){
			//设置是否伸展
			field.setExpanded((Boolean)gxtComponentMetaNodeModel.get(FieldSetModelEnum.EXPANDED.name().toLowerCase()));
		}
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.HEADING.name().toLowerCase())!=null){
			//设置标题
			field.setHeading((String)gxtComponentMetaNodeModel.get(FieldSetModelEnum.HEADING.name().toLowerCase()));
		}
		if(gxtComponentMetaNodeModel.get(FieldSetModelEnum.LAYOUT.name().toLowerCase())!=null){
			//设置布局
			field.setLayout((Layout)gxtComponentMetaNodeModel.get(FieldSetModelEnum.LAYOUT.name().toLowerCase()));
		}
		
		return field;
	}
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建默认的FiledSet</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午04:34:48</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 */
	private static FieldSet createDefaultFieldSet(){
		FieldSet fieldSet=new FieldSet();
		fieldSet.setCollapsible(true);
		fieldSet.setHeading("信息");
		
		return fieldSet;
	}
}
